home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.5 Complementary Applications 2004 February / SGI IRIX 6.5 Complementary Applications 2004 February.iso / dist / cde.idb / usr / dt / share / include / Xm / CascadeBGP.h.z / CascadeBGP.h
Encoding:
C/C++ Source or Header  |  2003-11-18  |  8.5 KB  |  250 lines

  1. /*
  2.  * CascadeBGP.h
  3.  *
  4.  * Copyright 2000, Silicon Graphics, Inc.
  5.  * ALL RIGHTS RESERVED
  6.  * 
  7.  * UNPUBLISHED -- Rights reserved under the copyright laws of the United
  8.  * States.   Use of a copyright notice is precautionary only and does not
  9.  * imply publication or disclosure.
  10.  *
  11.  * U.S. GOVERNMENT RESTRICTED RIGHTS LEGEND:
  12.  * Use, duplication or disclosure by the Government is subject to restrictions
  13.  * as set forth in FAR 52.227.19(c)(2) or subparagraph (c)(1)(ii) of the Rights
  14.  * in Technical Data and Computer Software clause at DFARS 252.227-7013 and/or
  15.  * in similar or successor clauses in the FAR, or the DOD or NASA FAR
  16.  * Supplement.  Contractor/manufacturer is Silicon Graphics, Inc.,
  17.  * 2011 N. Shoreline Blvd. Mountain View, CA 94039-7311.
  18.  *
  19.  * THE CONTENT OF THIS WORK CONTAINS CONFIDENTIAL AND PROPRIETARY
  20.  * INFORMATION OF SILICON GRAPHICS, INC. ANY DUPLICATION, MODIFICATION,
  21.  * DISTRIBUTION, OR DISCLOSURE IN ANY FORM, IN WHOLE, OR IN PART, IS STRICTLY
  22.  * PROHIBITED WITHOUT THE PRIOR EXPRESS WRITTEN PERMISSION OF SILICON
  23.  * GRAPHICS, INC.
  24.  */
  25. /* 
  26.  * @OSF_COPYRIGHT@
  27.  * (c) Copyright 1990, 1991, 1992, 1993, 1994 OPEN SOFTWARE FOUNDATION, INC.
  28.  * ALL RIGHTS RESERVED
  29.  *  
  30. */ 
  31. /*
  32.  * HISTORY
  33.  * Motif Release 1.2.5
  34. */
  35. /*   $XConsortium: CascadeBGP.h /main/cde1_maint/2 1995/08/18 18:53:19 drk $ */
  36. /*
  37. *  (c) Copyright 1989, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
  38. /*
  39. *  (c) Copyright 1987, 1988, 1989, 1990, 1991, 1992 HEWLETT-PACKARD COMPANY */
  40. #ifndef  _XmCascadeBGP_h
  41. #define  _XmCascadeBGP_h
  42.  
  43. #include <Xm/CascadeBG.h>
  44. #include <Xm/LabelGP.h>
  45.  
  46. #ifdef __cplusplus
  47. extern "C" {
  48. #endif
  49.  
  50. /*********************************************************************
  51.  * The Arrow Cache record for the menu cascade button
  52.  *********************************************************************/
  53. typedef struct _XmArrowPixmap
  54. {
  55.    Dimension height, width;
  56.    unsigned int depth;
  57.    Pixel top_shadow_color, bottom_shadow_color, foreground_color;
  58.    Display *display;
  59.    Screen *screen;
  60.    Pixmap pixmap;
  61. } XmArrowPixmap;
  62.  
  63.  
  64. /*********************************************************************/
  65. /* The CascadeButton Gadget Cache Object's class and instance records*/
  66. /*********************************************************************/
  67.  
  68.  
  69. typedef struct _XmCascadeButtonGCacheObjClassPart
  70. {
  71.     int foo;
  72.  
  73. } XmCascadeButtonGCacheObjClassPart;
  74.  
  75.  
  76. typedef struct _XmCascadeButtonGCacheObjClassRec
  77. {
  78.         ObjectClassPart                     object_class;
  79.         XmExtClassPart                      ext_class;
  80.         XmLabelGCacheObjClassPart           label_class_cache;
  81.         XmCascadeButtonGCacheObjClassPart   cascade_button_class_cache;
  82.  
  83. } XmCascadeButtonGCacheObjClassRec;
  84.  
  85. externalref XmCascadeButtonGCacheObjClassRec xmCascadeButtonGCacheObjClassRec;
  86.  
  87.  
  88. typedef struct _XmCascadeButtonGCacheObjPart
  89. {
  90.     Pixmap              cascade_pixmap;         /* pixmap for the cascade */
  91.     int                 map_delay;              /* time delay for posting */
  92.     Pixmap        armed_pixmap;
  93. } XmCascadeButtonGCacheObjPart;
  94.  
  95. typedef struct _XmCascadeButtonGCacheObjRec
  96. {
  97.     ObjectPart                   object;
  98.     XmExtPart                    ext;
  99.     XmLabelGCacheObjPart         label_cache;
  100.     XmCascadeButtonGCacheObjPart cascade_button_cache;
  101. } XmCascadeButtonGCacheObjRec;
  102.  
  103. /* The CascadeButtonGadget instance record */
  104.  
  105. typedef    struct _XmCascadeButtonGadgetPart
  106. {            /* resources */
  107.     Widget        submenu;        /* the menu to pull down */
  108.     XtCallbackList    activate_callback;    /* widget fired callback */
  109.     XtCallbackList    cascade_callback;    /* optional callback, called */
  110.                         /* when the menu is about */
  111.                         /* to be pulled down */
  112.             /* internal fields */
  113.     Boolean        armed;            /* armed flag */
  114.     XRectangle        cascade_rect;        /* location of cascade*/
  115.     XtIntervalId    timer;            /* timeout id */
  116.     XmCascadeButtonGCacheObjPart         *cache;
  117.  
  118. } XmCascadeButtonGadgetPart;
  119.  
  120.  
  121. /* Full instance record declaration */
  122.  
  123. typedef struct _XmCascadeButtonGadgetRec
  124. {
  125.     ObjectPart               object;
  126.     RectObjPart                rectangle;
  127.     XmGadgetPart               gadget;
  128.     XmLabelGadgetPart          label;
  129.     XmCascadeButtonGadgetPart  cascade_button;
  130. } XmCascadeButtonGadgetRec;
  131.  
  132.  
  133.  
  134. /* CascadeButton class structure */
  135.  
  136. typedef struct 
  137. {
  138.     XtPointer    extension;    /* Pointer to extension record */
  139. } XmCascadeButtonGadgetClassPart;
  140.  
  141.  
  142. /* Full class record declaration for CascadeButton class */
  143.  
  144. typedef struct _XmCascadeButtonGadgetClassRec 
  145. {
  146.     RectObjClassPart               rect_class;
  147.     XmGadgetClassPart              gadget_class;
  148.     XmLabelGadgetClassPart         label_class;
  149.     XmCascadeButtonGadgetClassPart cascade_button_class;
  150. } XmCascadeButtonGadgetClassRec;
  151.  
  152.  
  153. externalref XmCascadeButtonGadgetClassRec   xmCascadeButtonGadgetClassRec;
  154.  
  155. /* Access macro definitions  for UNcached fields*/
  156.  
  157. #define CBG_Submenu(cb)        (((XmCascadeButtonGadget)             \
  158.                                   cb)->cascade_button.submenu)
  159. #define CBG_ActivateCall(cb)    (((XmCascadeButtonGadget)                    \
  160.                                   cb)->cascade_button.activate_callback)
  161. #define CBG_CascadeCall(cb)    (((XmCascadeButtonGadget)                    \
  162.                                   cb)->cascade_button.cascade_callback)
  163. #define CBG_Armed(cb)        (((XmCascadeButtonGadget)                    \
  164.                                   cb)->cascade_button.armed)
  165. #define CBG_CascadeRect(cb)    (((XmCascadeButtonGadget)                    \
  166.                                   cb)->cascade_button.cascade_rect)
  167. #define CBG_Timer(cb)           (((XmCascadeButtonGadget)                    \
  168.                   cb)->cascade_button.timer)
  169. #define CBG_Cascade_x(cb)    (((XmCascadeButtonGadget)                    \
  170.                                   cb)->cascade_button.cascade_rect.x)
  171. #define CBG_Cascade_y(cb)    (((XmCascadeButtonGadget)                    \
  172.                                   cb)->cascade_button.cascade_rect.y)
  173. #define CBG_Cascade_width(cb)    (((XmCascadeButtonGadget)                    \
  174.                                   cb)->cascade_button.cascade_rect.width)
  175. #define CBG_Cascade_height(cb)    (((XmCascadeButtonGadget)                    \
  176.                                   cb)->cascade_button.cascade_rect.height)
  177. #define CBG_HasCascade(cb)      (((LabG_MenuType(cb) == XmMENU_PULLDOWN)  || \
  178.                       (LabG_MenuType(cb) == XmMENU_POPUP) ||     \
  179.                                   (LabG_MenuType(cb) == XmMENU_OPTION)) &&   \
  180.                      (CBG_Submenu(cb)))
  181.  
  182. #define XmCBG_ARMED_BIT          (1 << 0)    
  183. #define XmCBG_TRAVERSE_BIT     (1 << 1)
  184.  
  185. #define CBG_IsArmed(cb)     (((XmCascadeButtonGadget)(cb))->cascade_button.armed \
  186.               & XmCB_ARMED_BIT)
  187. #define CBG_Traversing(cb) (((XmCascadeButtonGadget)                          \
  188.                 (cb))->cascade_button.armed & XmCBG_TRAVERSE_BIT)
  189.  
  190. #define CBG_SetBit(byte,bit,v)  byte = (byte & (~bit)) | (v ? bit : 0)
  191.  
  192. #define CBG_SetArmed(cb,v)  CBG_SetBit (((XmCascadeButtonGadget)         \
  193.                        (cb))->cascade_button.armed,          \
  194.                       XmCBG_ARMED_BIT, v)
  195.  
  196. #define CBG_SetTraverse(cb,v)  CBG_SetBit (((XmCascadeButtonGadget)         \
  197.                        (cb))->cascade_button.armed,          \
  198.                       XmCBG_TRAVERSE_BIT, v)
  199.  
  200.  
  201.                   
  202. /* Access macro definitions  for Cached fields*/
  203.  
  204. #define CBG_CascadePixmap(cb)   (((XmCascadeButtonGadget)                    \
  205.                   cb)->cascade_button.cache->cascade_pixmap)
  206. #define CBG_MapDelay(cb)        (((XmCascadeButtonGadget)                    \
  207.                   cb)->cascade_button.cache->map_delay)
  208. #define CBG_ArmedPixmap(cb)    (((XmCascadeButtonGadget)                    \
  209.                   cb)->cascade_button.cache->armed_pixmap)
  210.  
  211.  
  212. /******************************/
  213. /* Convenience Macros         */
  214. /******************************/
  215.  
  216.  
  217. #define CBG_Cache(w)                    (((XmCascadeButtonGadget)(w))->\
  218.                        cascade_button.cache)
  219. #define CBG_ClassCachePart(w) \
  220.     (((XmCascadeButtonGadgetClass)xmCascadeButtonGadgetClass)->gadget_class.cache_part)
  221.  
  222.  
  223. /********    Private Function Declarations    ********/
  224. #ifdef _NO_PROTO
  225.  
  226. extern int _XmArrowPixmapCacheCompare() ;
  227. extern void _XmArrowPixmapCacheDelete() ;
  228. extern void _XmCreateArrowPixmaps() ;
  229.  
  230. #else
  231.  
  232. extern int _XmArrowPixmapCacheCompare( 
  233.                         XtPointer A,
  234.                         XtPointer B) ;
  235. extern void _XmArrowPixmapCacheDelete( 
  236.                         XtPointer data) ;
  237. extern void _XmCreateArrowPixmaps( 
  238.                         Widget wid) ;
  239.  
  240. #endif /* _NO_PROTO */
  241. /********    End Private Function Declarations    ********/
  242.  
  243.  
  244. #ifdef __cplusplus
  245. }  /* Close scope of 'extern "C"' declaration which encloses file. */
  246. #endif
  247.  
  248. #endif  /* _XmCascadeBGP_h */
  249. /* DON'T ADD STUFF AFTER THIS #endif */
  250.